Field of the Invention
The present invention is directed in general to field of information processing. In one aspect, the present invention relates generally to a software program development tool, method, and apparatus in a data processing system.
Description of the Related Art
Computer programmers, developers, coders and/or software engineers write, test, debug, and maintain computer software or code instructions, called computer programs, which computers must follow to perform their functions, When writing or making changes to computer program to address new or unique technical challenges, programmers often create new, original and unique programming source code which can, unfortunately, suffer from performance limitations and other sub-optimalities. For example, a programmer's unique source code may include a number of undetected software bugs or otherwise suffer from low quality or robustness if the code has not been thoroughly tested, or may have reduced performance functionality if the code is outdated or has not been updated or maintained. Unique source code is often also bloated and less readable than desired due to inefficiencies in the computer program's use of memory, disk space, processing power, or other hardware resources whilst making only dubious user-perceptible improvements or suffering from feature creep. Programmers can address many of these problems by using libraries of basic code that can be modified or customized for a specific application, thereby yielding more reliable and consistent programs and increasing the programmer's productivity. However, there are significant difficulties with using libraries in that a significant amount of effort, knowledge, and experience is needed in order to correctly identify a suitable library from among thousands of stored library files, to understand the performance and coding requirements of the library, and to make any required code adjustments thereto. In addition, the responsibility for using a library typically resides with the programmer or code reviewer, making it difficult to track and enforce library usage. There are similar challenges with developing, updating and expanding existing library databases since there are no standardized mechanisms for generating, vetting, and adding library functions to an existing library knowledge base. In the absence of control procedures for reviewing and validating proposed library additions, an uploaded library file can corrupt or damage the library knowledge base. Thus, while the use of libraries is considered a best practice for software development, the existing solutions for adding library functions to promote library use are extremely difficult at a practical level by virtue of the difficulty in identifying, uploading, adding, adopting, and modifying libraries.